The present technique relates to and apparatus and method for performing accumulation of floating-point numbers.
It is common to use floating-point (FP) representation in data processing systems. A floating-point number includes a significand and an exponent indicating a significance of the bits of the significand. This allows numeric values over a large range to be represented using a finite number of bits. However, a problem with floating-point arithmetic is that calculations are generally non-associative. For example, when accumulating several floating-point values, each time another value is added to, or subtracted from, the result of the previous addition/subtraction, the result is rounded and normalised, which means that the overall result is different depending on the order in which the values are accumulated. Hence, sums are not reproducible unless completed in the exact same order. To generate a reproducible result, a series of additions or subtractions typically have to be performed sequentially, which can make floating-point arithmetic relatively slow
It would be desirable to provide an improved technique for efficiently handling accumulation of floating-point numbers.